#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>

#include <sys/ioctl.h>
#include <sys/socket.h>

#include <net/if.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <pthread.h>

#define PORT 50021

int sendfd;


// 向数字标牌发UDP数据
void *sendUDP(void *arg)
{
    // 准备对端的地址
    struct sockaddr_in addr = {0};
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr((char *)arg);
    addr.sin_port = htons(PORT);

    // 给对端发送UDP数据
    char msg[100];
    while(1)
    {
        bzero(msg, 100);
        fgets(msg, 100, stdin);

        int n = sendto(sendfd, msg, strlen(msg), 0,
                        (struct sockaddr *)&addr, sizeof(addr));
        if(n == -1)
            perror("发送失败");
    }
}

int main(int argc, char const *argv[]) // ./a.out 开发板IP
{
    if(argc != 2)
    {
        printf("请指定对端的IP地址\n");
        exit(0);
    }

    // 创建两个UDP套接字
    sendfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    if(sendfd == -1)
    {
        perror("创建套接字失败");
        exit(0);
    }

    // 创建两条线程，一条负责收数据，一条负责发数据
    pthread_t t2;
    pthread_create(&t2, NULL, sendUDP, (void*)argv[1]);

    pthread_exit(NULL);
}